
package controle;

import java.util.ArrayList;
    
public class Pilha {
    
    private ArrayList pilha;
    private int sp;
    
    public Pilha() {
        super();
        pilha = new ArrayList();
       // pilha.add("$");
        sp = 0;
        
    }
    
    public int getSp(){
        return pilha.size()-1;
    }
    
    public boolean isEmpty(){
        if (pilha.size()==1){
            return true;
        }else{
            return false;
        }
    }
    
    public void push(Object elemento){
        try{
            this.pilha.add(elemento);
        }catch(NullPointerException e){
            System.err.println("Erro em pilha.java no metodo Push"+ e.getMessage());
        }
    }
    
    public Object pop(){
        Object retorno = null;
        try{
            retorno = this.pilha.get(getSp()); // pega elemento do topo da pilha
            this.pilha.remove(getSp()); //
        }catch(NullPointerException e){
            System.err.println("Erro em pilha.java no metodo POP"+ e.getMessage());
        }
        return retorno;
    }
 
    public Object getlEmentAt(int endereco){
        Object retorno = null;
        try{
            retorno = this.pilha.get(endereco); // pega elemento do topo da pilha
        }catch(NullPointerException e){
            System.err.println("Erro em pilha.java no metodo getlEmentAt"+ e.getMessage());
        }
        return retorno;
    }
    
    public void replaceEmentAt(int endereco, Object element){
        try{
            this.pilha.set(endereco, element);
        }catch(NullPointerException e){
            System.err.println("Erro em pilha.java no metodo replaceEmentAt"+ e.getMessage());
        }
        
    }
}
